#ifndef DW_GRAFFITI_RENDER_WINDOW_H
#	define DW_GRAFFITI_RENDER_WINDOW_H

#include "color.h"

namespace dw {

	namespace system {
		class Window;
	} // namespace system
	
	namespace graffiti {

struct Context;

class RenderWindow
{
public : //! @ Constants
	//! @{
	static const uint DefaultClearMode;
	static const Colorf DefaultClearColor;
	static const float32 DefaultClearDepth;
	static const int32 DefaultClearStencil;
	//! @}

public : //! @name Commands
	//! @{
	void clear();
	void present();
	//! @}

public : //! @name State
	//! @{
	dw::uint32 getWidth() const ;
	dw::uint32 getHeight() const ;
	//! @}

private : //! @name Construction & Destruction
	//! @{
	RenderWindow(dw::system::Window* window, Context* context);

	friend class Renderer;
	//! @}

private : //! @name Data
	const Context* m_context;
	dw::system::Window* m_window;
	int32 m_clearMode;
	Colorf m_clearColor;
	float32 m_clearDepth;
	int32 m_clearStencil;
	//! @}
};

	} // namespace graffiti
} // namespace dw

#endif // !DW_GRAFFITI_RENDER_WINDOW_H
